	list	p=pic16f84a, r=dec
	org	0
	goto	_start
	org	4
	goto	interrupt
_STATUS	equ	3
_C	equ	0
_Z	equ	2
_PCL	equ	2
_PCLATH	equ	10
_TMR0	equ	1
_INTCON	equ	11
_OPTION	equ	129
PIC16F84_static	equ	18
Processor_static	equ	18
Lcd_static	equ	18
LcdTest_static	equ	18
PIC16F84__PORTA	equ	18
PIC16F84__PORTB	equ	18
PIC16F84__EEDATA	equ	18
PIC16F84__EEADR	equ	18
PIC16F84__TRISA	equ	18
PIC16F84__TRISB	equ	18
PIC16F84__EECON1	equ	18
PIC16F84__EECON2	equ	18
PIC16F84__C	equ	18
PIC16F84__Z	equ	18
PIC16F84__W	equ	18
PIC16F84__F	equ	18
PIC16F84__TMR0	equ	18
PIC16F84__PCL	equ	18
PIC16F84__STATUS	equ	18
PIC16F84__FSR	equ	18
PIC16F84__PCLATH	equ	18
PIC16F84__INTCON	equ	18
PIC16F84__OPTION	equ	18
Lcd_port	equ	0
Lcd_tris	equ	1
Lcd_CLEAR_LCD	equ	18
Lcd_RETURN_HOME	equ	18
Lcd_ENTRY_MODE	equ	18
Lcd_ENTRY_MODE_SHIFT	equ	18
Lcd_SYSTEM_SET_8_BIT	equ	18
Lcd_SYSTEM_SET_4_BIT	equ	18
Lcd_DISPLAY_ON	equ	18
Lcd_DISPLAY_OFF	equ	18
Lcd_SET_DD_LINE1	equ	18
Lcd_SET_DD_LINE2	equ	18
Lcd_SET_DD_RAM	equ	18
Lcd_WRITE_DATA	equ	18
Lcd_CURSOR_ON	equ	18
Lcd_CURSOR_OFF	equ	18
Lcd_E	equ	18
Lcd_RW	equ	18
Lcd_RS	equ	18
Lcd_DB4	equ	18
Lcd_DB5	equ	18
Lcd_DB6	equ	18
Lcd_DB7	equ	18
LcdTest_lcd	equ	18
LcdTest_hello	equ	18
LcdTest_numbers	equ	18
PIC16F84__setMemory_II_V_loc	equ	19
PIC16F84__setMemory_II_V_tmp	equ	21
PIC16F84__getMemory_I_I_loc	equ	19
PIC16F84__getMemory_I_I_tmp	equ	20
PIC16F84__setBit_II_V_loc	equ	19
PIC16F84__setBit_II_V_tmp	equ	21
PIC16F84__clearBit_II_V_loc	equ	19
PIC16F84__clearBit_II_V_tmp	equ	21
PIC16F84__asm_Str_loc	equ	19
PIC16F84__asm_Str_tmp	equ	20
PIC16F84__initline_Str_loc	equ	19
PIC16F84__initline_Str_tmp	equ	20
PIC16F84__clock_I_V_loc	equ	19
PIC16F84__clock_I_V_tmp	equ	20
PIC16F84__delay_I_V_loc	equ	19
PIC16F84__delay_I_V_tmp	equ	20
PIC16F84__heap_I_V_loc	equ	19
PIC16F84__heap_I_V_tmp	equ	20
PIC16F84__memory_II_V_loc	equ	19
PIC16F84__memory_II_V_tmp	equ	21
PIC16F84__banksize_I_V_loc	equ	19
PIC16F84__banksize_I_V_tmp	equ	20
PIC16F84__genlabel__V_loc	equ	19
PIC16F84__genlabel__V_tmp	equ	19
PIC16F84__getlabelhigh__I_loc	equ	19
PIC16F84__getlabelhigh__I_tmp	equ	19
PIC16F84__getlabellow__I_loc	equ	19
PIC16F84__getlabellow__I_tmp	equ	19
PIC16F84__printlabel__V_loc	equ	19
PIC16F84__printlabel__V_tmp	equ	19
PIC16F84__init___V_loc	equ	19
PIC16F84__init___V_tmp	equ	20
Processor__init___V_loc	equ	22
Processor__init___V_tmp	equ	23
Lcd__init__II_V_loc	equ	24
Lcd__init__II_V_tmp	equ	27
Lcd_setDataLines_I_V_loc	equ	29
Lcd_setDataLines_I_V_tmp	equ	31
Lcd_sendCmdByte_I_V_loc	equ	33
Lcd_sendCmdByte_I_V_tmp	equ	35
Lcd_sendCmd_I_V_loc	equ	33
Lcd_sendCmd_I_V_tmp	equ	35
Lcd_sendChar_I_V_loc	equ	21
Lcd_sendChar_I_V_tmp	equ	23
Lcd_waitNotBusy__V_loc	equ	29
Lcd_waitNotBusy__V_tmp	equ	31
Lcd_getStatus__I_loc	equ	21
Lcd_getStatus__I_tmp	equ	23
Lcd_msDelay_I_V_loc	equ	37
Lcd_msDelay_I_V_tmp	equ	40
Lcd_clear__V_loc	equ	21
Lcd_clear__V_tmp	equ	22
Lcd_line2__V_loc	equ	21
Lcd_line2__V_tmp	equ	22
Lcd_toggle__V_loc	equ	38
Lcd_toggle__V_tmp	equ	39
LcdTest__init___V_loc	equ	24
LcdTest__init___V_tmp	equ	25
LcdTest_main_Str_loc	equ	42
LcdTest_main_Str_tmp	equ	45
LcdTest_stop__V_loc	equ	20
LcdTest_stop__V_tmp	equ	20
_FSR_TEMP	equ	12
_ACC	equ	13
_HEAP	equ	14
_ACC_TEMP	equ	15
_STATUS_TEMP	equ	16
_W_TEMP	equ	17
_start
	movlw	79
	movwf	_HEAP
	goto	main
clockspeed	equ	4000000
; tmr0 count = 250
tmr0_for_1ms	equ	6
; prescaler = 4
set_prescaler_for_1ms	macro
	bcf	_OPTION,2
	bcf	_OPTION,1
	bsf	_OPTION,0
	endm

PIC16F84__init___V
;---- PIC16F84.java[69]
;---- PIC16F84.java[70]
;---- PIC16F84.java[72]
;---- PIC16F84.java[73]
;---- PIC16F84.java[74]
;---- PIC16F84.java[75]
;---- PIC16F84.java[77]
;---- PIC16F84.java[78]
;---- PIC16F84.java[79]
;---- PIC16F84.java[80]
;---- PIC16F84.java[81]
;---- PIC16F84.java[83]
;---- PIC16F84.java[84]
;---- PIC16F84.java[85]
;---- PIC16F84.java[87]
;---- PIC16F84.java[88]
;---- PIC16F84.java[89]
;---- PIC16F84.java[90]
	return

Processor__init___V
;---- Processor.java[1]
	movf	Processor__init___V_loc+0,0
	movwf	PIC16F84__init___V_loc+0
	call	PIC16F84__init___V
	return

Lcd__init__II_V
;---- Lcd.java[27]:     public Lcd(int port, int tris) {
	movf	Lcd__init__II_V_loc+0,0
	movwf	Processor__init___V_loc+0
	call	Processor__init___V
;---- Lcd.java[28]: 	this.port = port;
	movf	Lcd__init__II_V_loc+0,0
	addlw	Lcd_port                           ; add field offset
	movwf	4
	movf	Lcd__init__II_V_loc+1,0
	movwf	0                                  ; putfield
;---- Lcd.java[29]: 	this.tris = tris;
	movf	Lcd__init__II_V_loc+0,0
	addlw	Lcd_tris                           ; add field offset
	movwf	4
	movf	Lcd__init__II_V_loc+2,0
	movwf	0                                  ; putfield
;---- Lcd.java[31]: 	_setMemory(tris, 0); // outputs
	movf	Lcd__init__II_V_loc+2,0
	movwf	4
	movlw	0
	movwf	0
;---- Lcd.java[32]: 	_setMemory(port, 0);
	movf	Lcd__init__II_V_loc+1,0
	movwf	4
	movlw	0
	movwf	0
;---- Lcd.java[34]: 	msDelay(30);                        /* Power up delay */
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_msDelay_I_V_loc+0
	movlw	30                                 ; const
	movwf	Lcd_msDelay_I_V_loc+1
	call	Lcd_msDelay_I_V
;---- Lcd.java[36]: 	sendCmdByte(SYSTEM_SET_8_BIT>>4);
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_sendCmdByte_I_V_loc+0
	movlw	3                                  ; const
	movwf	Lcd_sendCmdByte_I_V_loc+1
	call	Lcd_sendCmdByte_I_V
;---- Lcd.java[37]: 	msDelay(5);                        /* Power up delay */
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_msDelay_I_V_loc+0
	movlw	5                                  ; const
	movwf	Lcd_msDelay_I_V_loc+1
	call	Lcd_msDelay_I_V
;---- Lcd.java[38]: 	sendCmdByte(SYSTEM_SET_8_BIT>>4);
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_sendCmdByte_I_V_loc+0
	movlw	3                                  ; const
	movwf	Lcd_sendCmdByte_I_V_loc+1
	call	Lcd_sendCmdByte_I_V
;---- Lcd.java[39]: 	msDelay(5);                        /* Power up delay */
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_msDelay_I_V_loc+0
	movlw	5                                  ; const
	movwf	Lcd_msDelay_I_V_loc+1
	call	Lcd_msDelay_I_V
;---- Lcd.java[40]: 	sendCmdByte(SYSTEM_SET_8_BIT>>4);
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_sendCmdByte_I_V_loc+0
	movlw	3                                  ; const
	movwf	Lcd_sendCmdByte_I_V_loc+1
	call	Lcd_sendCmdByte_I_V
;---- Lcd.java[42]: 	msDelay(5);                        /* Power up delay */
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_msDelay_I_V_loc+0
	movlw	5                                  ; const
	movwf	Lcd_msDelay_I_V_loc+1
	call	Lcd_msDelay_I_V
;---- Lcd.java[43]: 	sendCmdByte(SYSTEM_SET_4_BIT>>4);
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_sendCmdByte_I_V_loc+0
	movlw	2                                  ; const
	movwf	Lcd_sendCmdByte_I_V_loc+1
	call	Lcd_sendCmdByte_I_V
;---- Lcd.java[45]: 	sendCmd(SYSTEM_SET_4_BIT);
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_sendCmd_I_V_loc+0
	movlw	40                                 ; const
	movwf	Lcd_sendCmd_I_V_loc+1
	call	Lcd_sendCmd_I_V
;---- Lcd.java[48]: 	sendCmd(DISPLAY_ON);
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_sendCmd_I_V_loc+0
	movlw	12                                 ; const
	movwf	Lcd_sendCmd_I_V_loc+1
	call	Lcd_sendCmd_I_V
;---- Lcd.java[49]: 	sendCmd(CLEAR_LCD);
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_sendCmd_I_V_loc+0
	movlw	1                                  ; const
	movwf	Lcd_sendCmd_I_V_loc+1
	call	Lcd_sendCmd_I_V
;---- Lcd.java[50]: 	sendCmd(ENTRY_MODE);
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_sendCmd_I_V_loc+0
	movlw	6                                  ; const
	movwf	Lcd_sendCmd_I_V_loc+1
	call	Lcd_sendCmd_I_V
;---- Lcd.java[51]: 	sendCmd(SET_DD_RAM);
	movf	Lcd__init__II_V_loc+0,0
	movwf	Lcd_sendCmd_I_V_loc+0
	movlw	128                                ; const
	movwf	Lcd_sendCmd_I_V_loc+1
	call	Lcd_sendCmd_I_V
;---- Lcd.java[52]:     }
	return

Lcd_setDataLines_I_V
;---- Lcd.java[55]: 	if ((data & 1) != 0) _setBit(port, DB4);
	movf	Lcd_setDataLines_I_V_loc+1,0
	andlw	1
	iorlw	0
	btfsc	_STATUS,_Z                         ; if eq
	goto	Lcd_setDataLines_I_V_17
	movf	Lcd_setDataLines_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,4
	goto	Lcd_setDataLines_I_V_25
;---- Lcd.java[56]: 	else _clearBit(port, DB4);
Lcd_setDataLines_I_V_17
bseladdr	set	Lcd_setDataLines_I_V_loc+0
	banksel	bseladdr
	movf	Lcd_setDataLines_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,4
;---- Lcd.java[57]: 	if ((data & 2) != 0) _setBit(port, DB5);
Lcd_setDataLines_I_V_25
bseladdr	set	Lcd_setDataLines_I_V_loc+1
	banksel	bseladdr
	movf	Lcd_setDataLines_I_V_loc+1,0
	andlw	2
	iorlw	0
	btfsc	_STATUS,_Z                         ; if eq
	goto	Lcd_setDataLines_I_V_42
	movf	Lcd_setDataLines_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,5
	goto	Lcd_setDataLines_I_V_50
;---- Lcd.java[58]: 	else _clearBit(port, DB5);
Lcd_setDataLines_I_V_42
bseladdr	set	Lcd_setDataLines_I_V_loc+0
	banksel	bseladdr
	movf	Lcd_setDataLines_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,5
;---- Lcd.java[59]: 	if ((data & 4) != 0) _setBit(port, DB6);
Lcd_setDataLines_I_V_50
bseladdr	set	Lcd_setDataLines_I_V_loc+1
	banksel	bseladdr
	movf	Lcd_setDataLines_I_V_loc+1,0
	andlw	4
	iorlw	0
	btfsc	_STATUS,_Z                         ; if eq
	goto	Lcd_setDataLines_I_V_68
	movf	Lcd_setDataLines_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,6
	goto	Lcd_setDataLines_I_V_77
;---- Lcd.java[60]: 	else _clearBit(port, DB6);
Lcd_setDataLines_I_V_68
bseladdr	set	Lcd_setDataLines_I_V_loc+0
	banksel	bseladdr
	movf	Lcd_setDataLines_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,6
;---- Lcd.java[61]: 	if ((data & 8) != 0) _setBit(port, DB7);
Lcd_setDataLines_I_V_77
bseladdr	set	Lcd_setDataLines_I_V_loc+1
	banksel	bseladdr
	movf	Lcd_setDataLines_I_V_loc+1,0
	andlw	8
	iorlw	0
	btfsc	_STATUS,_Z                         ; if eq
	goto	Lcd_setDataLines_I_V_96
	movf	Lcd_setDataLines_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,7
	goto	Lcd_setDataLines_I_V_105
;---- Lcd.java[62]: 	else _clearBit(port, DB7);
Lcd_setDataLines_I_V_96
bseladdr	set	Lcd_setDataLines_I_V_loc+0
	banksel	bseladdr
	movf	Lcd_setDataLines_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,7
;---- Lcd.java[63]:     }
Lcd_setDataLines_I_V_105
	banksel	_ACC
	return

Lcd_sendCmdByte_I_V
;---- Lcd.java[66]: 	msDelay(5);
	movf	Lcd_sendCmdByte_I_V_loc+0,0
	movwf	Lcd_msDelay_I_V_loc+0
	movlw	5                                  ; const
	movwf	Lcd_msDelay_I_V_loc+1
	call	Lcd_msDelay_I_V
;---- Lcd.java[67]: 	setDataLines(cmd);
	movf	Lcd_sendCmdByte_I_V_loc+0,0
	movwf	Lcd_setDataLines_I_V_loc+0
	movf	Lcd_sendCmdByte_I_V_loc+1,0
	movwf	Lcd_setDataLines_I_V_loc+1
	call	Lcd_setDataLines_I_V
;---- Lcd.java[68]: 	_clearBit(port, RW);
	movf	Lcd_sendCmdByte_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,2
;---- Lcd.java[69]: 	_clearBit(port, RS);
	movf	Lcd_sendCmdByte_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,1
;---- Lcd.java[70]: 	toggle();
	movf	Lcd_sendCmdByte_I_V_loc+0,0
	movwf	Lcd_toggle__V_loc+0
	call	Lcd_toggle__V
;---- Lcd.java[71]:     }
	return

Lcd_sendCmd_I_V
;---- Lcd.java[74]: 	waitNotBusy();
	movf	Lcd_sendCmd_I_V_loc+0,0
	movwf	Lcd_waitNotBusy__V_loc+0
	call	Lcd_waitNotBusy__V
;---- Lcd.java[75]: 	setDataLines(cmd>>4);
	swapf	Lcd_sendCmd_I_V_loc+1,0
	andlw	15
	movwf	Lcd_sendCmd_I_V_tmp+0
	movf	Lcd_sendCmd_I_V_loc+0,0
	movwf	Lcd_setDataLines_I_V_loc+0
	movf	Lcd_sendCmd_I_V_tmp+0,0
	movwf	Lcd_setDataLines_I_V_loc+1
	call	Lcd_setDataLines_I_V
;---- Lcd.java[76]: 	_clearBit(port, RW);
	movf	Lcd_sendCmd_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,2
;---- Lcd.java[77]: 	_clearBit(port, RS);
	movf	Lcd_sendCmd_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,1
;---- Lcd.java[78]: 	toggle();
	movf	Lcd_sendCmd_I_V_loc+0,0
	movwf	Lcd_toggle__V_loc+0
	call	Lcd_toggle__V
;---- Lcd.java[79]: 	setDataLines(cmd);
	movf	Lcd_sendCmd_I_V_loc+0,0
	movwf	Lcd_setDataLines_I_V_loc+0
	movf	Lcd_sendCmd_I_V_loc+1,0
	movwf	Lcd_setDataLines_I_V_loc+1
	call	Lcd_setDataLines_I_V
;---- Lcd.java[80]: 	toggle();
	movf	Lcd_sendCmd_I_V_loc+0,0
	movwf	Lcd_toggle__V_loc+0
	call	Lcd_toggle__V
;---- Lcd.java[81]:     }
	return

Lcd_sendChar_I_V
;---- Lcd.java[84]: 	waitNotBusy();
	movf	Lcd_sendChar_I_V_loc+0,0
	movwf	Lcd_waitNotBusy__V_loc+0
	call	Lcd_waitNotBusy__V
;---- Lcd.java[85]: 	setDataLines(ch>>4);
	swapf	Lcd_sendChar_I_V_loc+1,0
	andlw	15
	movwf	Lcd_sendChar_I_V_tmp+0
	movf	Lcd_sendChar_I_V_loc+0,0
	movwf	Lcd_setDataLines_I_V_loc+0
	movf	Lcd_sendChar_I_V_tmp+0,0
	movwf	Lcd_setDataLines_I_V_loc+1
	call	Lcd_setDataLines_I_V
;---- Lcd.java[86]: 	_clearBit(port, RW);
	movf	Lcd_sendChar_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,2
;---- Lcd.java[87]: 	_setBit(port, RS);
	movf	Lcd_sendChar_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,1
;---- Lcd.java[88]: 	toggle();
	movf	Lcd_sendChar_I_V_loc+0,0
	movwf	Lcd_toggle__V_loc+0
	call	Lcd_toggle__V
;---- Lcd.java[89]: 	setDataLines(ch);
	movf	Lcd_sendChar_I_V_loc+0,0
	movwf	Lcd_setDataLines_I_V_loc+0
	movf	Lcd_sendChar_I_V_loc+1,0
	movwf	Lcd_setDataLines_I_V_loc+1
	call	Lcd_setDataLines_I_V
;---- Lcd.java[90]: 	toggle();
	movf	Lcd_sendChar_I_V_loc+0,0
	movwf	Lcd_toggle__V_loc+0
	call	Lcd_toggle__V
;---- Lcd.java[91]: 	_clearBit(port, RS);
	movf	Lcd_sendChar_I_V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,1
;---- Lcd.java[92]:     }
	return

Lcd_waitNotBusy__V
;---- Lcd.java[95]: 	int result = 0x80;
	movlw	128
	movwf	Lcd_waitNotBusy__V_loc+1
;---- Lcd.java[97]: 	_setBit(port, RW);
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,2
;---- Lcd.java[98]: 	_clearBit(port, RS);
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,1
;---- Lcd.java[100]: 	_setBit(tris, DB4);
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,4
;---- Lcd.java[101]: 	_setBit(tris, DB5);
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,5
;---- Lcd.java[102]: 	_setBit(tris, DB6);
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,6
;---- Lcd.java[103]: 	_setBit(tris, DB7);
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,7
;---- Lcd.java[105]: 	while ((result & 0x80) != 0) {
	goto	Lcd_waitNotBusy__V_95
;---- Lcd.java[106]: 	    toggle();
Lcd_waitNotBusy__V_57
bseladdr	set	Lcd_waitNotBusy__V_loc+0
	banksel	bseladdr
	movf	Lcd_waitNotBusy__V_loc+0,0
	movwf	Lcd_toggle__V_loc+0
	call	Lcd_toggle__V
;---- Lcd.java[107]: 	    result = _getMemory(port)<<4;
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	swapf	4,0
	andlw	240
	movwf	Lcd_waitNotBusy__V_loc+1
;---- Lcd.java[108]: 	    toggle();
	movf	Lcd_waitNotBusy__V_loc+0,0
	movwf	Lcd_toggle__V_loc+0
	call	Lcd_toggle__V
;---- Lcd.java[109]: 	    result |= _getMemory(port);
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	iorwf	Lcd_waitNotBusy__V_loc+1,0
	movwf	Lcd_waitNotBusy__V_loc+1
;---- Lcd.java[110]: 	    _delay(100);
	movlw	33
	movwf	_ACC
	decfsz	_ACC,1
	goto	$-1
;---- Lcd.java[111]: 	    _asm("    clrwdt");
    clrwdt
;---- Lcd.java[105]: 	while ((result & 0x80) != 0) {
Lcd_waitNotBusy__V_95
bseladdr	set	Lcd_waitNotBusy__V_loc+1
	banksel	bseladdr
	movf	Lcd_waitNotBusy__V_loc+1,0
	andlw	128
	iorlw	0
	btfss	_STATUS,_Z                         ; if ne
	goto	Lcd_waitNotBusy__V_57
;---- Lcd.java[114]: 	_clearBit(tris, DB4);
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,4
;---- Lcd.java[115]: 	_clearBit(tris, DB5);
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,5
;---- Lcd.java[116]: 	_clearBit(tris, DB6);
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,6
;---- Lcd.java[117]: 	_clearBit(tris, DB7);
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,7
;---- Lcd.java[118]: 	_clearBit(port, RW);
	movf	Lcd_waitNotBusy__V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,2
;---- Lcd.java[119]:     }
	return

Lcd_getStatus__I
;---- Lcd.java[124]: 	_setBit(port, RW);
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,2
;---- Lcd.java[125]: 	_clearBit(port, RS);
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,1
;---- Lcd.java[127]: 	_setBit(tris, DB4);
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,4
;---- Lcd.java[128]: 	_setBit(tris, DB5);
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,5
;---- Lcd.java[129]: 	_setBit(tris, DB6);
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,6
;---- Lcd.java[130]: 	_setBit(tris, DB7);
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,7
;---- Lcd.java[132]: 	toggle();
	movf	Lcd_getStatus__I_loc+0,0
	movwf	Lcd_toggle__V_loc+0
	call	Lcd_toggle__V
;---- Lcd.java[133]: 	result = _getMemory(port)<<4;
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	swapf	4,0
	andlw	240
	movwf	Lcd_getStatus__I_loc+1
;---- Lcd.java[134]: 	toggle();
	movf	Lcd_getStatus__I_loc+0,0
	movwf	Lcd_toggle__V_loc+0
	call	Lcd_toggle__V
;---- Lcd.java[135]: 	result |= _getMemory(port);
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	iorwf	Lcd_getStatus__I_loc+1,0
	movwf	Lcd_getStatus__I_loc+1
;---- Lcd.java[137]: 	_clearBit(tris, DB4);
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,4
;---- Lcd.java[138]: 	_clearBit(tris, DB5);
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,5
;---- Lcd.java[139]: 	_clearBit(tris, DB6);
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,6
;---- Lcd.java[140]: 	_clearBit(tris, DB7);
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_tris                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,7
;---- Lcd.java[141]: 	_clearBit(port, RW);
	movf	Lcd_getStatus__I_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,2
;---- Lcd.java[143]: 	return result;
	movf	Lcd_getStatus__I_loc+1,0
	return

Lcd_msDelay_I_V
;---- Lcd.java[147]: 	for (int i = 0; i < ms; i++) {
	movlw	0
	movwf	Lcd_msDelay_I_V_loc+2
	goto	Lcd_msDelay_I_V_19
;---- Lcd.java[148]: 	    _delay(1000);
Lcd_msDelay_I_V_5
	movlw	250
bseladdr	set	_ACC
	banksel	bseladdr
	movwf	_ACC
	nop
	decfsz	_ACC,1
	goto	$-2
;---- Lcd.java[149]: 	    _asm("    clrwdt");
    clrwdt
;---- Lcd.java[147]: 	for (int i = 0; i < ms; i++) {
	incf	Lcd_msDelay_I_V_loc+2,1
Lcd_msDelay_I_V_19
bseladdr	set	Lcd_msDelay_I_V_loc+1
	banksel	bseladdr
	movf	Lcd_msDelay_I_V_loc+1,0
	subwf	Lcd_msDelay_I_V_loc+2,0
	btfss	_STATUS,_C                         ; skip if C flag set
	goto	Lcd_msDelay_I_V_5                   ; jump if lt
;---- Lcd.java[151]:     }
	return

Lcd_clear__V
;---- Lcd.java[154]: 	sendCmd(CLEAR_LCD);
	movf	Lcd_clear__V_loc+0,0
	movwf	Lcd_sendCmd_I_V_loc+0
	movlw	1                                  ; const
	movwf	Lcd_sendCmd_I_V_loc+1
	call	Lcd_sendCmd_I_V
;---- Lcd.java[155]:     }
	return

Lcd_line2__V
;---- Lcd.java[158]: 	sendCmd(SET_DD_LINE2);
	movf	Lcd_line2__V_loc+0,0
	movwf	Lcd_sendCmd_I_V_loc+0
	movlw	192                                ; const
	movwf	Lcd_sendCmd_I_V_loc+1
	call	Lcd_sendCmd_I_V
;---- Lcd.java[159]:     }
	return

Lcd_toggle__V
;---- Lcd.java[162]: 	_setBit(port, E);
	movf	Lcd_toggle__V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bsf	0,3
;---- Lcd.java[163]: 	_delay(10);
	movlw	3
	movwf	_ACC
	decfsz	_ACC,1
	goto	$-1
;---- Lcd.java[164]: 	_clearBit(port, E);
	movf	Lcd_toggle__V_loc+0,0
	addlw	Lcd_port                           ; add offset for getfield
	movwf	4
	movf	0,0                                 ; getfield
	movwf	4
	bcf	0,3
;---- Lcd.java[165]: 	_delay(10);
	movlw	3
	movwf	_ACC
	decfsz	_ACC,1
	goto	$-1
;---- Lcd.java[166]:     }
	return

LcdTest__init___V
;---- LcdTest.java[1]: public class LcdTest extends Processor {
	movf	LcdTest__init___V_loc+0,0
	movwf	Processor__init___V_loc+0
	call	Processor__init___V
	return

LcdTest_main_Str
main
;---- LcdTest.java[7]: 	_clock(4000000);
;---- LcdTest.java[10]: 	lcd = new Lcd(0x06, 0x86);
	movlw	2
bseladdr	set	_HEAP
	banksel	bseladdr
	subwf	_HEAP,1
	movf	_HEAP,0
	movwf	LcdTest_main_Str_tmp+0
	movf	LcdTest_main_Str_tmp+0,0
	movwf	Lcd__init__II_V_loc+0
	movlw	6                                  ; const
	movwf	Lcd__init__II_V_loc+1
	movlw	134                                ; const
	movwf	Lcd__init__II_V_loc+2
	call	Lcd__init__II_V
	movf	LcdTest_main_Str_tmp+0,0
	movwf	LcdTest_lcd
;---- LcdTest.java[12]: 	lcd.clear();
	movf	LcdTest_lcd,0
	movwf	Lcd_clear__V_loc+0
	call	Lcd_clear__V
;---- LcdTest.java[14]: 	for (int i = 0; i < hello.length(); i++)
	movlw	0
	movwf	LcdTest_main_Str_loc+1
	goto	LcdTest_main_Str_46
;---- LcdTest.java[15]: 	    lcd.sendChar(hello.charAt(i));
LcdTest_main_Str_31
bseladdr	set	LcdTest_main_Str_loc+1
	banksel	bseladdr
	movf	LcdTest_main_Str_loc+1,0
	movwf	_ACC
	incf	_ACC,1
	movlw	LOW strtable0
	addwf	_ACC,1
	movlw	HIGH strtable0
	btfsc	_STATUS,_C
	addlw	1
	movwf	_PCLATH
	movf	_ACC,0
	call	strtable0
	goto	strtableend0
strtable0
	movwf	_PCL
	retlw	'H'
	retlw	'e'
	retlw	'l'
	retlw	'l'
	retlw	'o'
	retlw	','
	retlw	' '
	retlw	'w'
	retlw	'o'
	retlw	'r'
	retlw	'l'
	retlw	'd'
	retlw	'!'
strtableend0
bseladdr	set	LcdTest_main_Str_tmp+0
	banksel	bseladdr
	movwf	LcdTest_main_Str_tmp+0
	movf	LcdTest_lcd,0
	movwf	Lcd_sendChar_I_V_loc+0
	movf	LcdTest_main_Str_tmp+0,0
	movwf	Lcd_sendChar_I_V_loc+1
	call	Lcd_sendChar_I_V
;---- LcdTest.java[14]: 	for (int i = 0; i < hello.length(); i++)
	incf	LcdTest_main_Str_loc+1,1
LcdTest_main_Str_46
bseladdr	set	LcdTest_main_Str_loc+1
	banksel	bseladdr
	movf	LcdTest_main_Str_loc+1,0
	sublw	13
	btfsc	_STATUS,_Z                         ; skip if Z flag not set
	goto	$+3                                 ; jump if eq
	btfsc	_STATUS,_C                         ; skip if C flag not set
	goto	LcdTest_main_Str_31                 ; jump if ge
;---- LcdTest.java[17]: 	lcd.line2();
	movf	LcdTest_lcd,0
	movwf	Lcd_line2__V_loc+0
	call	Lcd_line2__V
;---- LcdTest.java[19]: 	for (int i = 0; i < numbers.length(); i++)
	movlw	0
	movwf	LcdTest_main_Str_loc+2
	goto	LcdTest_main_Str_81
;---- LcdTest.java[20]: 	    lcd.sendChar(numbers.charAt(i));
LcdTest_main_Str_66
bseladdr	set	LcdTest_main_Str_loc+2
	banksel	bseladdr
	movf	LcdTest_main_Str_loc+2,0
	movwf	_ACC
	incf	_ACC,1
	movlw	LOW strtable1
	addwf	_ACC,1
	movlw	HIGH strtable1
	btfsc	_STATUS,_C
	addlw	1
	movwf	_PCLATH
	movf	_ACC,0
	call	strtable1
	goto	strtableend1
strtable1
	movwf	_PCL
	retlw	'1'
	retlw	'2'
	retlw	'3'
	retlw	'4'
	retlw	'5'
	retlw	'6'
	retlw	'7'
	retlw	'8'
	retlw	'9'
	retlw	'0'
strtableend1
bseladdr	set	LcdTest_main_Str_tmp+0
	banksel	bseladdr
	movwf	LcdTest_main_Str_tmp+0
	movf	LcdTest_lcd,0
	movwf	Lcd_sendChar_I_V_loc+0
	movf	LcdTest_main_Str_tmp+0,0
	movwf	Lcd_sendChar_I_V_loc+1
	call	Lcd_sendChar_I_V
;---- LcdTest.java[19]: 	for (int i = 0; i < numbers.length(); i++)
	incf	LcdTest_main_Str_loc+2,1
LcdTest_main_Str_81
bseladdr	set	LcdTest_main_Str_loc+2
	banksel	bseladdr
	movf	LcdTest_main_Str_loc+2,0
	sublw	10
	btfsc	_STATUS,_Z                         ; skip if Z flag not set
	goto	$+3                                 ; jump if eq
	btfsc	_STATUS,_C                         ; skip if C flag not set
	goto	LcdTest_main_Str_66                 ; jump if ge
;---- LcdTest.java[22]: 	stop();
	call	LcdTest_stop__V
;---- LcdTest.java[23]:     }
	return

LcdTest_stop__V
;---- LcdTest.java[26]: 	for (;;) lcd.msDelay(1);
	goto	LcdTest_stop__V_3
LcdTest_stop__V_3
bseladdr	set	LcdTest_lcd
	banksel	bseladdr
	movf	LcdTest_lcd,0
	movwf	Lcd_msDelay_I_V_loc+0
	movlw	1                                  ; const
	movwf	Lcd_msDelay_I_V_loc+1
	call	Lcd_msDelay_I_V
	goto	LcdTest_stop__V_3
interrupt
	movwf	_W_TEMP
	swapf	_STATUS,0
	movwf	_STATUS_TEMP
	movf	_ACC,0
	movwf	_ACC_TEMP
	movf	4,0
	movwf	_FSR_TEMP
	banksel	_ACC

	movf	_FSR_TEMP,0
	movwf	4
	movf	_ACC_TEMP,0
	movwf	_ACC
	swapf	_STATUS_TEMP,0
	movwf	_STATUS
	swapf	_W_TEMP,1
	swapf	_W_TEMP,0
	retfie
	end
